#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<signal.h>

void sighandle(int sig)
{
    printf("alarm\n");
    sigset_t set;
    sigemptyset(&set);
    sigprocmask(SIG_SETMASK,&set,NULL);
}
void sighandle2(int sig)
{
    wait(NULL);
}
int main(int argc,char **argv)
{
    signal(SIGCHLD,sighandle2);
    signal(SIGALRM,sighandle);
    alarm(5);
    sigset_t set;
    sigaddset(&set,SIGINT);
    sigprocmask(SIG_BLOCK,&set,NULL);
    pid_t pid;
    pid = fork();
    if(pid < 0)
    {
        printf("fork error");
    }
    if(pid == 0 )
    {
        printf("child\n");
    }
    else if(pid > 0)
    {
       
        while(1)
        {
            printf("father\n");
            sleep(1);
        }
    }
    
    return 0;
}